package partyBrookerHameln;
/**
 * Superklasse von Verleih und Verkauf, die gemeinsame Attribute teilen, wie zum
 * Beispiel das gekaufte/geliehene Objekt mit Anzahl, die Kosten, oder ein
 * boolean ob der Kunde diese transaktion schon bezahlt hat. Die Differenz aus
 * objekt.bestand und Transaktion.anzahl ist die Anzahl der nicht
 * zurückgegebenen Objekte beim Verleih.
 *
 */
public class Transaktion {
	private boolean abgeschlossen;
	protected int anzahl;
	protected Gegenstand objekt;
	protected double kosten;

	/**
	 * Konstruktor der Klasse Transaktion. Setzt abgeschlossen zunächst auf
	 * false.
	 * 
	 * @param objekt
	 *            Bekommt den ausgeliehenen Gegenstand übergeben
	 * @param anzahl
	 *            Bekommt die Anzahl der ausgeliehenen Gegenstände übergeben
	 */
	public Transaktion(Gegenstand objekt, int anzahl) {
		this.anzahl = anzahl;
		this.objekt = objekt;
		this.abgeschlossen = false;

	}

	/**
	 * Gibt zurück, ob eine Transaktion bereits bezahlt (und somit
	 * abgeschlossen) ist oder nicht.
	 * 
	 * @return true, wenn die Transaktion bezahlt wurde
	 */
	public boolean getabgeschlossen() {
		return abgeschlossen;
	}

	/**
	 * Setzt die Abgeschlossenheit (ob die Transaktion bezahlt wurde) auf den
	 * übergebenen Boolean.
	 * 
	 * @param a
	 *            Boolean ob abgeschlossen
	 */
	public void setAbgeschlossen(boolean a) {
		abgeschlossen = a;
	}

	/**
	 * Gibt die Anzahl des ausgeliehenen Objekts zurück
	 * 
	 * @return Ganzzahlige Anzahl ausgeliehener Objekte in dieser Transaktion
	 */
	public int getAnzahl() {
		return anzahl;
	}

	/**
	 * Setzt die Anzahl der ausgeliehenen Objekte auf den übergebenen int
	 * 
	 * @param anz
	 *            Anzahl als int
	 */
	public void setAnzahl(int anz) {
		anzahl = anz;
	}

	/**
	 * Gibt den in der Transaktion enthaltenen Gegenstand zurück
	 * 
	 * @return Gegenstand
	 */
	public Gegenstand getobjekt() {
		return objekt;
	}

	/**
	 * Die Methode stellt eine Zeichenkette auf eine bestimmte Länge ein, indem
	 * sie mit vorangestellten Leerzeichen aufgefüllt wird.
	 * 
	 * @param st
	 *            Der zu formatierende String
	 * @param len
	 *            Die Länge des auszugebenen String
	 * @return String Eine mit führenden Leerzeichen verlängerte Zeichenkette
	 */
	public String formatBlanks(String st, int len) {
		String result = String.valueOf(st);
		while (result.length() < len) {
			result = " " + result;
		}
		return result;
	}

}
